package main_test

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

// 定义请求结构体
type GenerateRequest struct {
	Model  string `json:"model"`
	Prompt string `json:"prompt"`
	Stream bool   `json:"stream"`
}

// 定义响应结构体
type GenerateResponse struct {
	Response  string `json:"response"`
	CreatedAt string `json:"created_at"`
	Done      bool   `json:"done"`
}

func Main3() {
	// Ollama 服务地址
	url := "http://localhost:11434/api/generate"

	// 创建请求体
	requestBody := GenerateRequest{
		Model:  "huihui_ai/deepseek-r1-abliterated:8b", // 使用的模型名称
		Prompt: "为什么天空是蓝色的？",
		Stream: false,
	}

	// 将结构体转换为 JSON
	jsonData, err := json.Marshal(requestBody)
	if err != nil {
		fmt.Println("JSON 编码错误:", err)
		return
	}

	// 创建 HTTP 请求
	req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Println("创建请求失败:", err)
		return
	}

	// 设置请求头
	req.Header.Set("Content-Type", "application/json")

	// 发送请求
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Println("请求失败:", err)
		return
	}
	defer resp.Body.Close()

	// 检查响应状态码
	if resp.StatusCode != http.StatusOK {
		body, _ := io.ReadAll(resp.Body)
		fmt.Printf("错误响应: %s\n状态码: %d\n", body, resp.StatusCode)
		return
	}

	// 解析响应体
	var generateResponse GenerateResponse
	decoder := json.NewDecoder(resp.Body)
	if err := decoder.Decode(&generateResponse); err != nil {
		fmt.Println("解析响应失败:", err)
		return
	}

	// 输出结果
	fmt.Println("生成的响应:")
	fmt.Println(generateResponse.Response)
}
